home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / Str.h < prev    next >
C/C++ Source or Header  |  1998-02-23  |  1KB  |  69 lines

  1. #ifndef STR_H
  2. #define STR_H
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7.  
  8. #define STRBUF 10000
  9.  
  10.  
  11. class StrBuf {
  12.     short b[STRBUF];
  13. public:
  14.     char *alloc( short size );
  15.     void free( char *buf );
  16.  
  17. };
  18.  
  19.  
  20. extern StrBuf strbuf;
  21.  
  22. class String {
  23.  
  24.     char *str;
  25.  
  26.     void remstr( void ) { if( str ) { 
  27. //        if( str )         printf( "Free: %s\n", str );
  28.         strbuf.free( str ); str = 0; } }
  29.     void attach( char *s ) {
  30.         Len = strlen( s );
  31.         str = strbuf.alloc( Len+1 );
  32.         strcpy( str, s );
  33. //        printf( "Attach: %s\n", str );
  34.     }
  35.     void attach( char *s, short l ) {
  36.         Len = l;
  37.         str = strbuf.alloc( Len+1 );
  38.         memcpy( str, s, Len );
  39.         str[Len] = 0;
  40. //        printf( "Attach: %s\n", str );
  41.     }
  42.     
  43. public:
  44.  
  45.     short Len;
  46.  
  47.     String( char *s ) { attach( s ); }
  48.     String( char *s, short l ) { attach( s, l ); }
  49.     
  50.     String( void ) {
  51.         str = 0;
  52.     }
  53.     
  54.     ~String() { remstr(); }
  55.     
  56.     char *operator=( char *s ) { remstr(); attach( s ); return str; }
  57.     char *operator=( String &s ) { remstr(); attach( s ); return str; } 
  58.     char *operator+=( char *a );
  59.     String &operator+( char c );
  60.     operator char*() { return str; }
  61.     short Pos( char *t, short s = 0 );
  62.     void Cut( short p, short l = 1 );
  63.     void Copy( char *s, short l ) { remstr(); attach( s, l ); }
  64.     
  65.  
  66. };
  67.  
  68. #endif
  69.